package cn.kennylee.codehub.mq.lip.integration.base.anno;

import cn.kennylee.codehub.mq.lip.integration.base.AbstractMqListener;

import java.lang.reflect.Method;

/**
 * <p> MQ消费者生成器接口 </p>
 * <p>Created on 2025/4/18.</p>
 *
 * @author kennylee
 * @since 0.0.1
 */
public interface MqListenerGenerator {

    /**
     * 支持的消息中间件类型
     *
     * @return 支持的消息中间件类型
     */
    IntegrationMqConsumer.MqType supportType();

    /**
     * 生成消费者
     *
     * @param targetBean   消费者类的对象
     * @param targetMethod 在消费者类的对象中被注解标记的方法
     * @param annotation   注解对象
     * @return 新生成的消费者对象
     */
    AbstractMqListener<?> generateListener(Object targetBean, Method targetMethod, IntegrationMqConsumer annotation);
}
